package 纯字符串;

/**
 * @description:
 * @author: 小白白
 * @create: 2021-09-30
 **/

public class No171Excel表列序号 {

    /**
     * 给你一个字符串 columnTitle ，表示 Excel 表格中的列名称。返回该列名称对应的列序号。
     *
     * 例如，
     *     A -> 1
     *     B -> 2
     *     C -> 3
     *     ...
     *     Z -> 26
     *     AA -> 27
     *     AB -> 28
     *     ...
     *  
     * 示例 1:
     * 输入: columnTitle = "A"
     * 输出: 1
     * 示例 2:
     * 输入: columnTitle = "AB"
     * 输出: 28
     * 示例 3:
     * 输入: columnTitle = "ZY"
     * 输出: 701
     * 示例 4:
     * 输入: columnTitle = "FXSHRXW"
     * 输出: 2147483647
     *  
     * 提示：
     * 1 <= columnTitle.length <= 7
     * columnTitle 仅由大写英文组成
     * columnTitle 在范围 ["A", "FXSHRXW"] 内
     */

    public int titleToNumber(String columnTitle) {

        int result = 0;

        char[] arr = columnTitle.toCharArray();

        int b = 1;

        for (int i = arr.length - 1; i >= 0; i--) {

            // 当前字母代表的序号
            int num = arr[i] - 'A' + 1;

            // 进行计算当前字母代表的数字
            int temp = num * (b) ;

            b = b*26;

            result += temp;
        }

        return result;
    }

    public static void main(String[] args) {
        No171Excel表列序号 n = new No171Excel表列序号();
        int result = n.titleToNumber("ZY");
        System.out.println(result);
    }

}
